﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <assert.h>
//模拟实现strlen函数
//方法1 计数器的方法
//int  my_strlen(char *str)
//{
//	int count = 0;
//	while (*str)
//	{
//		str++;
//		count++;
//	}
//	return count;
//}
//int main()
//{
//	char arr[] = "abcdef";
//	int  ret = my_strlen(arr);
//	printf("%d\n", ret);
//	return 0;
//}


////方法2 递归方法
//int  my_strlen(char *str)
//{
//	//abcdef
//	//1+bcdef
//	//1+1+cdef
//	//**********
//	if (*str == '\0')
//	{
//		return 0;
//	}
//	else
//		return 1 + my_strlen(str + 1);
//}
//int main()
//{
//	char arr[] = "abcdef";
//	int  ret = my_strlen(arr);
//	printf("%d\n", ret);
//	return 0;
//}



//指针-指针的方法
//int  my_strlen(char* str)
//{
//
//
//	char* stat = str;
//	while (*str)
//	{
//		str++;
//	}
//	return  str - stat;
//}
//int main()
//{
//	char arr[] = "abcdef";
//	int  ret = my_strlen(arr);
//	printf("%d\n", ret);
//	return 0;
//}



//模拟实现strcpy函数
//char* my_strcpy(char* s1, char* s2)
//{
//	char* stant = s1;
//	while (*s1++=*s2++)	//秒在当源字符串函数拷贝到目标空间函数的时候，要把\0拷贝过去 拷贝过去刚好结束
//	{
//		;
//	}
//
//	return stant;
//}
//int main()
//{
//	char arr1[20] = { 0 };
//	char arr2[] = "abcdef";
//	char* ret = my_strcpy(arr1,arr2);
//	printf("%s\n", ret);
//	return 0;
//}


//// 模拟实现strcat函数
//char* my_strcat(char* s1, char* s2)
//{
//		//1找目标空间的\0
//	char* srant = s1;
//	while (*s1)
//	{
//		s1++;
//	}
//	//2.开始拷贝
//	while (*s1++ = *s2++)
//	{
//		;
//	}
//	return srant;
//}
//int main()
//{
//	char arr1[20] = "hello";
//	char arr2[] = "word";
//	char* ret = my_strcat(arr1,arr2);
//	printf("%s\n", ret);
//	return 0;
//}


////模拟实现strstr
//char* my_strstr(char* str1, char* str2)
//{
//	char* s1 = NULL;
//	char* s2 = NULL;
//	char* cut = str1;
//	//1.判断目标空间是否存在有效字符
//	while (*cut)
//	{
//		s1 = cut;
//		s2 = str2;
//		while (*s1 == *s2 &&*s1 && *s2)
//		{
//			s1++;
//			s2++;
//		}
//		if (*s2 == '\0')
//		{
//			return cut;
//            
//	    }
//
//		cut++;
//
//	}
//	return NULL;
//	
//}
// int main()
//{
//	char arr1[20] = "helloword";
//	char arr2[] = "word";
//	char* ret = my_strstr(arr1,arr2);
//	if (ret == NULL)
//	{
//		printf("字串不存在\n");
//  }
//	else
//	{
//		printf("%s\n", ret);;
//
//	}
//	return 0;
//}


// strtok使用
//int main()
//{
//	char arr1[] = "192.168.1.100";
//	char arr2[20] = { 0 };
//	//1.先拷贝
//	strcpy(arr2, arr1);
//	//在分割
//	const char* sep = ".";
//	char* p = NULL;
//	for (p = strtok(arr1, sep); p != NULL; p = strtok(NULL, sep))
//	{
//		printf("%s\n", p);
//
//	}
//	return 0;
   



//strerror()函数
//#include <errno.h>
//int main()
//{
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%s\n", strerror(i));
//	}
//	return 0;
//}
//
//#include <stdio.h>
//#include <string.h>
//#include <errno.h>
//int main()
//{
//	FILE* pFile;
//	pFile = fopen("unexist.ent", "r");
//	if (pFile == NULL)
//		printf("Error opening file unexist.ent: %s\n", strerror(errno));
//	return 0;
//}
//


//#include <stdio.h>
//#include <string.h>
//#include <errno.h>
//int main()
//{
//	FILE* pFile;
//	pFile = fopen("unexist.ent", "r");
//	if (pFile == NULL)
//		perror("Error opening file unexist.ent");
//	return 0;
//}
//

//
//////模拟实现memcpy函数
//void* my_memcpy(void* dest, void* src,size_t num)
//{
//	char* ret = dest;
//	while (num--)
//	{
//		*(char*)dest = *(char*)src;
//		dest = (char*)dest + 1;
//		src = (char*)src + 1;
//	}
//	return ret;
//
//}
//int main()
//{
//	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	my_memcpy(arr1 + 2, arr1, 20);
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", arr1[i]);
// }
//	return 0;
//}
////不能解决重叠问题
//
//int main()
//{
//	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	memmove(arr1 + 2, arr1, 20);
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", arr1[i]);
// }
//	return 0;
//}
////不能解决重叠问题
//





////memset内存设置
//int main()
//{
//	char arr[] = "hello bite";
//	memset(arr, 'x', 5);//以字节为单位来设置的
//	printf("%s\n", arr);
//	return 0;
//}



////memcmp  函数的使⽤
//
//
//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6 };
//	int arr2[] = { 1,2,3,4,6 };
//	int ret = memcmp(arr1, arr2, 17);
//	printf("%d\n", ret);
//	return 0;
//}






